home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
commodore-users-of-norman
/
CUON_06_(08-1984).d64
/
single file copy
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2019-04-13
|
5KB
|
195 lines
10 POKE 53281,0:PRINT"[158][147]":POKE 53280,2
15 PRINT"[206][205]SINGLE FILE COPY[205][206]"
16 PRINT" MODIFIED BY:"
17 PRINT"[158]>BRUCE LYNN &"
18 PRINT">MIKE FULLMER"
20 REM SINGLE DRIVE FILE COPY
30 REMEMBER!! THIS PROGRAM WAS VASTLY MODIFIED BY BRUCE LYNN ON 10/06/83
35 REMEMBER!! ALSO BY MIKE FULLMER ON 10/10/83
40 POKE52,31:POKE56,31:CLR
45 FORI=0TO173
50 READD:POKE7936+I,D:NEXT
55 POKE785,0:POKE786,31
60 PL$=CHR$(19)
65 FORI=1TO24:PL$=PL$+CHR$(17):NEXT
70 FORI=1TO39:CL$=CL$+" ":NEXT
75 CL$=CL$+CHR$(13)+CL$+CHR$(13)
80 CL$=LEFT$(PL$,21)+CL$+CHR$(145)
85 OPEN15,8,15:REM OPEN ERROR CHANNEL
90 GOTO1010
100 :
110 REM READ THE DIRECTORY
130 POKE785,0:REM SELECT READ FUNCTION
140 PRINT#15,"I":OPEN2,8,2,"$"
150 NB=USR(2):REM LOAD DIR INTO MEMORY
160 CLOSE2:GOSUB800:REM CHECK ERROR
170 RETURN
200 :
210 REM DISPLAY DISK NAME
230 POKE785,6:REM SELECT FETCH CHAR
240 PRINT"[156]"LEFT$(PL$,3);CHR$(18);
250 FORK=142TO169
260 PRINTCHR$(USR(K));:NEXT
270 PRINTCHR$(146)"[158]"
280 RETURN
300 :
310 REM PRINT DIRECTORY ENTRY DE
330 POKE785,6:REM SELECT FETCH CHAR
340 IX=(DE-1)*32+254-INT((DE-1)/8)*2
345 IFUSR(IX)<128THENRETURN
350 TY=USR(IX)-128:IFTY=0ORTY>3THENRETURN
360 FOR K=IX+3 TO IX+18
370 PRINTCHR$(USR(K));
380 NEXT:PRINTTAB(16);",";
390 PRINTMID$("SPU",TY,1),",";:A$=STR$(USR(IX+28)+256*USR(IX+29)):A$=MID$(A$,2)
395 PRINTA$" ":RETURN
400 :
410 REM GET DESTINATION DISK
430 PRINTCL$;
440 PRINT"INSERT DESTINATION[158] DISK."
450 PRINT"PRESS ";CHR$(18);"RETURN";
460 PRINTCHR$(146);" WHEN READY."
470 GETDM$:IFDM$=""THEN470
480 IFDM$<>CHR$(13)GOTO470
490 PRINT#15,"UI":PRINT#15,"I":RETURN
500 :
510 REM GET A FILE TO COPY
530 PRINTCL$;:IFEN=63GOTO580
540 IFUE=128THENPRINTNM$;" TOO LARGE.";
550 IFEN=62THENPRINTNM$;" NOT FOUND.";
560 PRINT"[153]MOVE CURSOR ON FILE TO COPY":L3$="":EN=0:UE=0
570 NM$="":INPUTNM$,TY$,L3$::PRINT"[158]"
572 IF L3$="F"THEN PRINT"[145][145][145]";:GOSUB 30030:PRINT"[145][145]":GOTO 560
575 RETURN
580 PRINTNM$;" EXISTS.":PRINT"ENTER NEW NAME";
590 EN=0:NM$="":INPUT NM$:RETURN
600 :
610 REM READ THE FILE
630 POKE785,0:REM SELECT READ FUNCTION
640 OPEN2,8,2,"0:"+NM$+","+TY$+",R"
650 GOSUB900:IFEN<>0THENCLOSE2:RETURN
660 NB=USR(2):REM READ THE FILE
670 CLOSE2:GOSUB800:REM CHECK RESULTS
680 RETURN
700 :
710 REM WRITE THE FILE
730 POKE785,3:REM SELECT WRITE FUNCTION
740 OPEN2,8,2,NM$+","+TY$+",W"
750 GOSUB900:IFEN<>0THENCLOSE2:RETURN
760 NB=USR(2):REM WRITE THE BYTES
770 CLOSE2:GOSUB800:REM CHECK RESULTS
780 RETURN
800 :
810 REM CHECK USR() RETURN VALUE
830 NB=NB-(NB<0)*65536
840 IFNB<61440THENUE=0:RETURN
850 IFNB=61440THENUE=128:RETURN
860 PRINTCL$;
870 IFPEEK(785)=0THENPRINT"READ";
880 IFPEEK(785)=3THENPRINT"WRITE";
890 PRINT" ERROR #";NB-61440:END
900 :
910 REM READ ERROR CHANNEL
940 INPUT#15,EN,EM$,ET,ES
950 IFEN=0OREN=62OREN=63OREN=74THENRETURN
960 CLOSE15:PRINTCL$
970 PRINT"DISK ERROR #";EN
980 PRINTLEFT$(PL$,22);EM$:END
1000 :
1010 REM MAIN ROUTINE
1030 PRINTCHR$(147);:REM CLEAR SCREEN
1040 PRINT" [154]<<SINGLE DRIVE FILE COPY[154]>>"
1050 PRINT:PRINT"[153]==>READING DIRECTORY[158]"
1060 GOSUB110:REM READ THE DIR
1070 GOSUB210:REM DISPLAY TITLE
1080 NS=INT((NB+1)/254)
1090 IFNS=1GOTO4010:REM NO FILES
1100 DS=1
1110 IFNS<=DSTHENDS=1:REM START OVER
1120 PRINTLEFT$(PL$,4)
1130 BE=(DS-1)*8:LE=BE+15
1140 IFDS+1=NSTHENLE=BE+8
1150 FOR DE=BE TO LE
1160 GOSUB310:NEXT:REM DISPLAY FILES
1170 FORI=PEEK(214)TO20:REM CLEAR
1180 PRINT" "
1190 NEXT
1200 GOSUB510:REM GET FILE NAME
1210 IFNM$=""THENDS=DS+2:GOTO1110
2010 REM COPY THE FILE
2030 PRINTCL$;
2040 PRINT"READING ";NM$
2045 PRINT" "
2050 GOSUB610:REM READ THE FILE
2060 IFEN=62 OR UE=128 GOTO 1200
2070 BC=NB:REM SAVE COUNT
2080 GOSUB410:REM GET DEST. DISK
2090 PRINTCL$;" WRITING ";NM$:PRINT" "
2100 GOSUB710:REM WRITE THE FILE
2110 IFEN=0GOTO3010
2120 GOSUB510:REM GET NEW FILE
2130 IFNM$<>""GOTO2090
2140 PRINTCL$;" FILE NOT COPIED"
2150 GOTO3100
3010 REM DISPLAY COMPLETION STATUS
3030 PRINTCL$;
3040 IFNB<>BCGOTO3060
3050 GOSUB 30030:PRINT"COPY SUCCESSFUL. ";:GOTO3070
3060 PRINT"ERROR. ONLY ";NB;" OUT ";
3070 PRINTBC;"BYTES COPIED."
3100 PRINT"PRESS ";CHR$(18);
3110 PRINT" RETURN";CHR$(146);
3120 PRINT" TO COPY ANOTHER FILE"
3130 GETDM$:IFDM$=""THEN3130
3140 IFDM$=CHR$(13)THEN1000
3150 END
4010 REM NO FILES ERROR HANDLING
4030 PRINTLEFT$(PL$,21);
4040 PRINT"NO FILES ON THIS DISK."
4050 PRINT"PRESS ";CHR$(18);" RETURN ";CHR$(146);" TO TRY ANOTHER DISK."
4070 GETDM$:IFDM$=""THEN4070
4080 IFDM$=CHR$(13)THEN1000
4090 END
10000 DATA76,15,31,76,88,31,76,154
10010 DATA31,108,3,0,108,5,0,32
10020 DATA9,31,152,170,32,198,255,168
10030 DATA176,57,169,0,133,251,169,32
10040 DATA133,252,160,0,32,207,255,145
10050 DATA251,230,251,208,2,230,252,165
10060 DATA144,208,13,165,252,201,160,144
10070 DATA235,32,204,255,160,0,240,19
10080 DATA164,144,32,204,255,192,64,208
10090 DATA10,164,251,165,252,56,233,32
10100 DATA76,12,31,169,240,76,12,31
10110 DATA32,9,31,152,170,32,201,255
10120 DATA168,176,240,165,251,141,174,31
10130 DATA165,252,141,175,31,169,0,133
10140 DATA251,169,32,133,252,160,0,177
10150 DATA251,32,210,255,164,144,208,20
10160 DATA230,251,208,2,230,252,165,252
10170 DATA205,175,31,144,234,165,251,205
10180 DATA174,31,144,227,32,204,255,76
10190 DATA73,31,32,9,31,132,251,24
10200 DATA105,32,133,252,160,0,177,251
10210 DATA168,169,0,76,12,31
20000 TL=0:FORI=0TO173
20010 TL=TL+PEEK(7936+I)
20020 T=INT((I+1)/8)*8-1
20030 IFT=ITHENPRINTTL:TL=0
20040 NEXTI:PRINTTL
30000 INPUT#15,E,E$,E1,E2
30010 IFE=0THENE=(ST AND 191):E$="*ST*"
30020 RETURN
30030 OPEN1,8,0,"$0:"
30040 GOSUB30000:IFETHENSTOP:GOTO860
30050 GOSUB30100:GOSUB30100
30060 Q=Q+1:GET#1,X$:IFX$<>""GOTO30060
30070 GOSUB30100
30080 PRINT" [145]"
30082 L=X+Y*256:PRINT"--->";L;"BLOCKS FREE <---[158][145][145][145]"
30090 CLOSE1:PRINT#15,"I":RETURN
30100 GET#1,X$:GET#1,X$:GET#1,X$
30130 X=LEN(X$):IFXTHENX=ASC(X$)
30140 GET#1,X$:Y=LEN(X$):IFYTHENY=ASC(X$)
30150 RETURN